			function ajax_validate(url,tr){
				ajaxConection = ajax_connection();
				ajaxConection.open('GET',url,true);
				ajaxConection.tr = tr;
				ajaxConection.onreadystatechange = trata_resposta_validacao_ajax;
				ajaxConection.send(null);
			}
			
			function trata_resposta_validacao_ajax(){
				if (this.status==200&&this.readyState==4){
					this.tr.className = this.responseText+'value';
				}
			}
			
			function validateClienteCpf(tr,cpf){
				if (validaCPF(cpf)) ajax_validate('clienteValidate@cpf.action?entity.cpf='+cpf,tr);
				else tr.className = 'invalidvalue';
			}
			
			function validateClienteLogin(tr,login){
				ajax_validate('clienteValidate@login.action?entity.login='+login,tr);
			}
			
			function validateCopiaFilmeCodigo(tr,codigo,id){
				ajax_validate('copiaFilmeValidate@codigo.action?entity.id='+id+'&entity.codigo='+codigo,tr);
			}
			
			function validaCPF(cpf){
				/*var posicao, i, soma, dv, dv_informado;
				var digito = new Array(10);
				dv_informado = cpf.substr(9, 2); 
				
				for (i=0; i<=8; i++)
					digito[i] = cpf.substr(i, 1);

				posicao = 10;
				soma = 0;
				for (i=0; i<=8; i++) {
					soma = soma + digito[i] * posicao;
					posicao--;
				}
				digito[9] = soma % 11;
				if (digito[9] < 2)
					digito[9] = 0;
				else
					digito[9] = 11 - digito[9];

				posicao = 11;
				soma = 0;
				for (i=0; i<=9; i++) {
					soma = soma + digito[i] * posicao;
					posicao--;
				}
				digito[10] = soma % 11;
				if (digito[10] < 2)
					digito[10] = 0;
				else
					digito[10] = 11 - digito[10];

				dv = digito[9] * 10 + digito[10];
				if (dv != dv_informado)
					return false;*/
				
				return true;
			}